1. Field
The following description relates to data-race analysis for ensuring secure thread access in a multi-threaded program, for example, by analyzing the occurrence of thread access by a single thread through compile time analysis.
2. Description of the Related Art
Multi-core computing systems have contributed to development and wide use of the multi-threaded programs. Since the complexity of a multi-threaded program utilizing a thread, a lock, and shared data is increased exponentially (as compared, for instance, to a single-threaded program), it may be difficult to make an errorless program and/or to check errors of the program. Thus, as the use of the multi-threaded programs increases, attempts and researches on elimination of errors such as, for example, data-race and deadlock have been conducted.
Such thread error analysis primarily identifies accessed locks and data of each thread. Therefore, analysis of thread access is required to check an error or performance of a multi-threaded program. One method of analyzing secure thread access in a multi-threaded program includes data-race analysis. The data-race analysis is categorized into dynamic analysis and static analysis.
Static analysis reports a code in advance which is a potential error through analysis during compile time, but this analysis method is too complicated and is not appropriate as a bug validation tool due to false alarm.
In comparison, dynamic analysis rarely has a false alarm, and is simpler to analyze, compared to the static analysis, and thus it is easy to be implemented and used as a bug validation tool. However, the dynamic analysis has a serious drawback in that instrument analysis is required for almost all load/store operations in the program and accordingly heavy runtime overload occurs.